package org.hamcrest.generator;
import junit.framework.TestCase;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class QDoxFactoryReaderTest extends TestCase {
public void testExtractsOriginalParameterNamesFromSource() {
FactoryMethod method = new FactoryMethod("org.SomeClass", "someMethod", "unusedReturnType");
method.addParameter("java.lang.String", "badParamName");
String input = "" +
"package org;\n" +
"class SomeClass {\n" +
" Matcher someMethod(String realParamName) { ... } \n" +
"}\n";
FactoryMethod factoryMethod = wrapUsingQDoxedSource(method, "org.SomeClass", input);
assertEquals("java.lang.String", factoryMethod.getParameters().get(0).getType());
assertEquals("realParamName", factoryMethod.getParameters().get(0).getName());
}
public void testExtractsOriginalJavaDocFromSource() {
FactoryMethod method = new FactoryMethod("org.SomeClass", "someMethod", "unusedReturnType");
String input = "" +
"package org;\n" +
"class SomeClass {\n" +
" /**\n" +
" * This class does something.\n" +
" *\n" +
" * @return stuff.\n" +
" */\n" +
" Matcher someMethod() { ... } \n" +
"}\n";
FactoryMethod factoryMethod = wrapUsingQDoxedSource(method, "org.SomeClass", input);
assertEquals("This class does something.\n\n@return stuff.\n",
factoryMethod.getJavaDoc());
}
private FactoryMethod wrapUsingQDoxedSource(FactoryMethod originalMethod,
String className, String input) {
List<FactoryMethod> originalMethods = new ArrayList<FactoryMethod>();
originalMethods.add(originalMethod);
QDox qdox = new QDox();
qdox.addSource(new StringReader(input));
QDoxFactoryReader qDoxFactoryReader = new QDoxFactoryReader(
originalMethods, qdox, className);
return getFirstFactoryMethod(qDoxFactoryReader);
}
private FactoryMethod getFirstFactoryMethod(QDoxFactoryReader qDoxFactoryReader) {
Iterator<FactoryMethod> iterator = qDoxFactoryReader.iterator();
iterator.hasNext();
return iterator.next();
}
}